`usr strict`

const path = require('path')
const WorkerPlugin = require('worker-plugin')

const name = process.env.VUE_APP_CHINESE_NAME ? process.env.VUE_APP_CHINESE_NAME : '打印服务'
const icon = "public/favicon.ico" // 图标

/**
 * 分解
 * @param dir
 * @returns {string}
 */
function resolve(dir) {
  return path.join(__dirname, dir)
}

// 导入模块
module.exports = {
  publicPath: process.env.NODE_ENV === 'development' ? '/' : '/print-admin/',
  outputDir: process.env.VUE_APP_DIR ? process.env.VUE_APP_DIR : 'print-admin',
  assetsDir: 'static',
  lintOnSave: process.env.NODE_ENV === 'development',
  productionSourceMap: false,
  devServer: {
    host: '0.0.0.0',
    port: process.env.VUE_APP_PORT ? process.env.VUE_APP_PORT : 8080,
    compress: true, // 静态文件开启gzip压缩
    // proxy: {
    //     // 代理服务器(开发环境)
    //     '/api': {
    //         target: process.env.VUE_APP_BASE_URL ? process.env.VUE_APP_BASE_URL : 'http://localhost',
    //         // ws: true,
    //         changeOrigin: true,
    //         pathRewrite: {
    //             '^/api' : ''
    //         }
    //     }
    // }
  },
  pluginOptions: {
    electronBuilder: {
      nodeIntegration: true,
      preload: './src/preload.js',
      // outputDir: process.env.VUE_APP_DIR ? process.env.VUE_APP_DIR + '_app' : 'admin_app',
      builderOptions: {
        // 发布站点
        // publish: [ // 配置更新的站点
        //   {
        //     provider: "generic",
        //     url: process.env.VUE_APP_UPDATE_URL
        //   }
        // ],
        nsis: {
          oneClick: false, // 是否一键安装
          allowToChangeInstallationDirectory: true, //用户自定义安装目录
          allowElevation: true, // 提升权限
          shortcutName: name,
          installerIcon: icon, // 安装是显示的图标
          uninstallerIcon: icon,
          installerHeaderIcon: icon,
          createDesktopShortcut: true, // 是否创建快捷方式
          createStartMenuShortcut: true, // 是否创建开始菜单快捷方式
          perMachine: true, // 是否为辅助安装程序显示安装模式安装程序页面（选择每台机器或每用户）
        },
        appId: "com.printdemo.app",
        productName: name,
        win: {
          icon: icon,
          target: [
            {
              target: 'nsis',
              arch: ['x64'],
            }
          ]
        }
      },
    }
  },
  configureWebpack: {
    name: name,
    plugins: [
      new WorkerPlugin(),
    ],
    resolve: {
      alias: {
        '@': resolve('src')
      }
    },
  },
  chainWebpack(config) {
    // set svg-sprite-loader
    config.module
      .rule('svg')
      .exclude.add(resolve('src/icons'))
      .end()
    config.module
      .rule('icons')
      .test(/\.svg$/)
      .include.add(resolve('src/icons'))
      .end()
      .use('svg-sprite-loader')
      .loader('svg-sprite-loader')
      .options({
        symbolId: 'icon-[name]'
      })
      .end()
    config
      .plugin('html')
      .tap(args => {
        args[0].title = name
        return args
      }).end()
  }

}
